package com.ruicar.afs.cloud.afscase.mq.approvesendinfo;

import com.ruicar.afs.cloud.bizcommon.print.vo.TemplateDataSendVo;
import com.ruicar.afs.cloud.common.modules.dto.mq.approve.*;
import com.ruicar.afs.cloud.common.modules.dto.mq.loan.LoanSubmitInfo;
import com.ruicar.afs.cloud.common.modules.dto.mq.loan.LoanToContractDataMessage;
import com.ruicar.afs.cloud.common.mq.rabbit.anno.send.AfsRabbitMqClient;
import com.ruicar.afs.cloud.common.mq.rabbit.anno.send.AfsRabbitMqSender;
import com.ruicar.afs.cloud.common.mq.rabbit.message.AfsTransEntity;
import com.ruicar.afs.cloud.image.vo.AttachmentDataSendVo;

/**
 * @author jiaqi.guo
 * @version 1.0
 * @description: MQ通知发送
 * @created 2020/6/19 10:03
 */
@AfsRabbitMqClient
public interface PushDataForPos {
    /**
     * 常规审批通知
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendApprovalNotic(AfsTransEntity<ApproveSubmitInfo> afsTransEntity);


    /**
     * 常规留言通知
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendMessageNotic(AfsTransEntity<ApproveSubmitInfo> afsTransEntity);

    /**
     * 常规附条件核准
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendConditionalApproval(AfsTransEntity<ApproveSubmitInfo> afsTransEntity);

    /**
     * 退回合作商通知
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendBackToPartnersNotic(AfsTransEntity<ApproveSubmitInfo> afsTransEntity);

    /**
     * 批量取消案件通知
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendCancleToPartnersNotic(AfsTransEntity<ApproveSubmitInfo> afsTransEntity);

    /**
     * 进件数据落库结果通知
     * @param resultInfo
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void incomingApplyResult(AfsTransEntity<ApproveSubmitInfo> resultInfo);

    /**
     *推送合同数据到合同系统
     * @param resultInfo
     * @author yk.Li
     * @date 2020/7/8contract
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.contract}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendLoanMsgToContract(AfsTransEntity<LoanToContractDataMessage> resultInfo);

    /**
     * 放款合同数据落库结果通知
     * @param resultInfo
     * @author fangchenliang
     * @created 2020/7/3 21:39
     * @version 1.0
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void loanApplyResult(AfsTransEntity<LoanSubmitInfo> resultInfo);

    /**
     * 加急结果通知
     * @param resultInfo
     *
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}",exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendTurnUrgentResult(AfsTransEntity<ApproveSubmitInfo> resultInfo);

    /**
     * GPS安装规则通知
     * @param afsTransEntity
     * @author yk.Li
     * @date 2020/6/30
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendGpsMsgToApplyNotic(AfsTransEntity<ApproveSubmitInfo> afsTransEntity);

    /**
     * 资产变更审批结果通知
     *  @param resultInfo
     * @author jiaqi.guo
     * @created 2020/7/30 10:13
     * @version 1.0
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}",exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendChangeAssetsResult(AfsTransEntity<ApproveSpecialSubmitInfo> resultInfo);

    /**
     * 复议申请审批结果通知
     * @param resultInfo
     * @author xiaolong
     * @version 1.0
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}",exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendReconsideResult(AfsTransEntity<ReconsiderationDto> resultInfo);
    /**
     * 资产变更落库结果通知
     * @param resultInfo
     * @author jiaqi.guo
     * @created 2020/7/30 10:13
     * @version 1.0
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}",exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void changeAssetsResult(AfsTransEntity<ApproveSpecialSubmitInfo> resultInfo);


    /**
     * 资产变更审批通知
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendApprovalNoticForAssets(AfsTransEntity<ApproveSpecialSubmitInfo> afsTransEntity);

    /**
     * 复议审批审批通知
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendApprovalNoticForReconsideration(AfsTransEntity<ReconsiderationDto> afsTransEntity);


    /**
     * 资产变更留言通知
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendMessageNoticForAssets(AfsTransEntity<ApproveSpecialSubmitInfo> afsTransEntity);

    /**
     * 附件新增通知发送
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendAttachmentInfo(AfsTransEntity<AttachmentDataSendVo> afsTransEntity);

    /**
     * 复议落库结果通知
     * @param resultInfo
     * @author xiaolong
     * @created 2020/08/03 16:22
     * @version 1.0
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}",exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendReconsiderationResult(AfsTransEntity<ReconsiderationDto> resultInfo);

    /**
     * 模板新增通知发送
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendTemplateInfo(AfsTransEntity<TemplateDataSendVo> afsTransEntity);

    /**
     * 推送模板数据到合同系统
     * @param afsTransEntity
     * @author fangchenliang
     * @date 2020/8/17
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.ctmCaseToContractManage}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendTemplateToContract(AfsTransEntity<TemplateDataSendVo> afsTransEntity);
    /**
     * 放款模式规则通知
     * @param afsTransEntity
     * @author panhj
     * @date 2020/8/29
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendLoanModelToApplyNotic(AfsTransEntity<ApproveSubmitInfo> afsTransEntity);

    /**
     * 通知进件系统撤回申请结果
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendCallBackNotice(AfsTransEntity<CallBackApplyResultDto> afsTransEntity);

    /**
     * 推送审批撤回申请至进件系统
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendApproveCallBackApply(AfsTransEntity<CallBackApplyDto> afsTransEntity);

    /**
     * 审批过程‘打开’状态通知
     * @param resultInfo
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void incomingApproveOpenResult(AfsTransEntity<ApproveOpenResult> resultInfo);
    /**
     * 附条件核准、核准、退回经销商数据推送
     * @param
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void caseUpdateInfoSend(AfsTransEntity<CaseUpdateInfoSend> caseUpdateInfoSend);
    /**
     *经我处理追加留言通知
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.case}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendDealWithMessage(AfsTransEntity<ApproveSubmitInfo> afsTransEntity);
}
